<?php
/**
 * Created by PhpStorm.
 * User: lenovo
 * Date: 2020/8/3
 * Time: 15:12
 */

require_once __DIR__ . '/vendor/autoload.php';

use QL\QueryList;
use QL\Ext\Chrome;

/**获取列表数据
 * @param $ql
 * @param $page
 */
function getList($ql,$page){
    $page->goto('https://www.baidu.com');
    // 这里故意设置一个很长的延长时间，让你可以看到chrome浏览器的启动
    sleep(3);
    $size = 10;
    #从系统获取关键词
    $wd = '这是个简单的自动化搜索';
    $page->type("input[id='kw']",$wd);
    sleep(1);
    //点击搜索
    $page->click("input[type='submit']");

    //等待搜索结果
    sleep(3);
    //获取结果
    $html = $page->content();
    //用jquery选择器抽取结果
    $rules = array(
        'title'=>['#content_left h3 a','text'],//标题
        'url'=>['#content_left h3 a','href'],//跳转网址
        'description'=>['div .c-abstract','text'],//描述
    );
    $ql = QueryList::html($html);
    #列表结果
    $rt = $ql->rules($rules)->query()->getData();

    #
    $nextPage = $ql->find('div#page a.n')->text();
    echo '第1页'.PHP_EOL;
    $pages = 1;
    $pn = 0;
    while (strpos($ql->find('div#page a.n')->text(),'下一页') !== false){
        #点击下一页
        $pages =  $pages+1;
        $pn = $pn+$size;
        $page->goto("https://www.baidu.com/s?wd={$wd}&pn={$pn}&oq={$wd}");
        $html = $page->content();
        echo "第{$pages}页".PHP_EOL;
        sleep(3);
        $ql = QueryList::html($html);
        #列表结果
        $rt = $ql->rules($rules)->query()->getData();
        $nextPage = $ql->find('div#page a.n')->text();
        echo $nextPage.PHP_EOL;
    }

}

$ql = QueryList::getInstance();
// 注册插件，默认注册的方法名为: chrome
$ql->use(Chrome::class);
// 或者自定义注册的方法名
$ql->use(Chrome::class,'chrome');

$text = $ql->chrome(function ($page,$browser)use($ql) {
    getList($ql,$page);
    //如果有需要，可以把$rt入库，以及做其他操作
    sleep(10);
    $browser->close();
    // 返回值一定要是页面的HTML内容
   # return $html;
},[
    'headless' => false, // 启动可视化Chrome浏览器,方便调试
    'devtools' => false, // 打开浏览器的开发者工具
])->find('h1')->text();